/**
 * 
 */
package edu.gatech.oad.mule.input.interfaces;

/**
 * Represents the owner of a controller. This is the interface you want to
 * implement if you want to associate an object with a controller.
 * 
 * @author Dale Avery
 * 
 */
public interface ControllerOwner {

	/**
	 * Defines the types of input devices that a ControllerOwner may own.
	 * 
	 * @author Dale Avery
	 * 
	 */
	public static enum InputDevice {
		KEYBOARD_STD
	};

	/**
	 * Returns the type of InputDevice that this ControllerOwner is using.
	 * 
	 * @return This ControllerOwner's input device type.
	 */
	public InputDevice getInputDevice();

	/**
	 * Returns a String which should identify the ControllerOwner.
	 * 
	 * @return Identifies this ControllerOwner.
	 */
	public String toString();

	/**
	 * Determines whether the given Object is this ControllerOwner.
	 * 
	 * @param other
	 *            The Object to check for equivalence.
	 * @return True if the given Object is this ControllerOwner, false
	 *         otherwise.
	 */
	public boolean isSameOwner(Object other);
}
